package com.crazy.crazyproductservice.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.crazy.crazymodel.model.entity.Product;
import com.crazy.crazymodel.model.vo.ProductAddVO;
import com.crazy.crazymodel.model.vo.ProductGetVO;
import com.crazy.crazymodel.model.vo.ProductUpdateVO;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;

/**
 * ProductService
 *
 * @author 13259
 * @version 2024/05/07 19:16
 **/
public interface ProductService extends IService<Product> {
    /**
     * 获取产品列表
     *
     * @param productCurrent  当前页码
     * @param productName 产品名称
     * @param productType 产品类型
     * @param request       HTTP请求对象
     * @param productState 产品状态
     * @return 脱敏后的产品信息
     */
    ProductGetVO productGet(int productCurrent, String productName, String productType, String productState,HttpServletRequest request);

    /**
     * 新增产品
     *
     * @param productCode  产品代码
     * @param productName 产品名称
     * @param productType 产品类型
     * @param productRisk 产品风险等级
     * @param request       HTTP请求对象
     * @param finishTime 基金结束时间
     * @return 脱敏后的产品信息
     */
    ProductAddVO productAdd(String productCode, String productName, String productType, int productRisk, Date finishTime, HttpServletRequest request);

    /**
     * 修改产品
     *
     * @param productId 产品主键
     * @param productCode  产品代码
     * @param productName 产品名称
     * @param productType 产品类型
     * @param productRisk 产品风险等级
     * @param request       HTTP请求对象
     * @param finishTime 基金结束时间
     * @return 脱敏后的产品信息
     */
    ProductUpdateVO productUpdate(int productId, String productCode, String productName, String productType, int productRisk,Date finishTime, HttpServletRequest request);


    Product getById(int productID);

    /**
     * 根据产品代码获取产品
     * @param productCode
     * @return
     */
    Product getByCode(String productCode);

}
